﻿using System;
using System.Runtime.Serialization;
using NCMIS.ObjectModel.MetaData;

namespace NCMIS.Produce
{
    /// <summary>
    /// Indicates what level of changes (if any) the repository exposes via the "change log" service.
    /// </summary>
    [DataContract(Namespace = CmisNs.Cmis)]
    public enum CapabilityChanges
    {
        /// <summary>
        /// The repository does not support the change log feature.
        /// </summary>
        [EnumMember(Value = "none")]
        None,

        /// <summary>
        /// The change log can return only the ObjectIDs for changed objects in the repository and an
        /// indication of the type of change, not details of the actual change.
        /// </summary>
        [EnumMember(Value = "objectidsonly")]
        ObjectIdsOnly,

        /// <summary>
        ///  The change log can return properties and the ObjectID for the changed objects.
        /// </summary>
        [EnumMember(Value = "properties")]
        Properties,

        /// <summary>
        /// The change log can return the ObjectIDs for changed objects in the repository and more
        /// information about the actual change.
        /// </summary>
        [EnumMember(Value = "all")]
        All,
    }
}
